import { makeObservable, observable, action } from 'mobx'
import { getData } from '@/services/modules/list'
/*
  在版本6之前，Mobx鼓励使用ES.next中的decorators,将某个对象标记为observable, computed 和 action。然而，装饰器语法尚未定案以及未被纳入ES标准，标准化的过程还需要很长时间，且未来制定的标准可能与当前的装饰器实现方案有所不同。出于兼容性的考虑，我们在MobX 6中放弃了它们，并建议使用makeObservable / makeAutoObservable代替。

  在版本6中，为了让装饰器的实现更简单以及保证装饰器的兼容性，必须在构造函数中调用makeObservable(this)。
*/

class Count {
  @observable count = 0

  constructor() {
    makeObservable(this)
  }

  @action
  increment = () => {
    this.count++
  }

  @action
  getData = () => {
    return getData()
  }
}

const CountStore = new Count()

export default CountStore
